Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Node / ReticulumProjects / MeshChatX.git / files / meshchatx / src / frontend / components / settings / PluginsSettingsSection.vue

Displaying Raw • Download


meshchatx/src/frontend/components/settings/PluginsSettingsSection.vue ecd47eee1abb91524ddaeb2deac67aa2aac578d0 (ecd47eee) Text, 11.58 KB

T8b949e<!-- SPDX-License-Identifier: 0BSD -->

Tb4b4b4<Tff7b72templateTb4b4b4>
Tb4b4b4<Tff7b72SettingsSectionBlock
Te6edf3v-showTff7b72=Ta5d6ff"Te6edf3visibleTa5d6ff"
Tb4b4b4:Te6edf3titleTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'plugins.settings.title'Tb4b4b4)Ta5d6ff"
Tb4b4b4:Te6edf3descriptionTff7b72=Ta5d6ff"Te6edf3$tTb4b4b4(Ta5d6ff'plugins.settings.description'Tb4b4b4)Ta5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"space-y-4"Tb4b4b4>
Tb4b4b4<Tff7b72div
Te6edf3classTff7b72=Ta5d6ff"rounded-xl border-2 border-dashed border-gray-300 dark:border-zinc-700 bg-gray-50 dark:bg-zinc-900/40 p-6 text-center transition-colors"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3dragActive Tff7b72? Ta5d6ff'border-blue-500 bg-blue-50/60 dark:bg-blue-950/20' Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4@Te6edf3dragenterTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3dragActive Tff7b72= Tff7b72trueTa5d6ff"
Tb4b4b4@Te6edf3dragoverTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3dragActive Tff7b72= Tff7b72trueTa5d6ff"
Tb4b4b4@Te6edf3dragleaveTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3dragActive Tff7b72= Tff7b72falseTa5d6ff"
Tb4b4b4@Te6edf3dropTb4b4b4.Te6edf3preventTff7b72=Ta5d6ff"Te6edf3onDropArchiveTa5d6ff"
Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm font-medium text-gray-800 dark:text-gray-200"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.drag_drop"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"mt-1 text-xs text-gray-500 dark:text-gray-400"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.install_zip"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72label Te6edf3classTff7b72=Ta5d6ff"mt-4 inline-flex"Tb4b4b4>
Tb4b4b4<Tff7b72input
Te6edf3refTff7b72=Ta5d6ff"fileInput"
Te6edf3typeTff7b72=Ta5d6ff"file"
Te6edf3acceptTff7b72=Ta5d6ff".zip,application/zip"
Te6edf3classTff7b72=Ta5d6ff"sr-only"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3installingTa5d6ff"
Tb4b4b4@Te6edf3changeTff7b72=Ta5d6ff"Te6edf3onInstallFileTa5d6ff"
Tb4b4b4/Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"px-4 py-2 rounded-md bg-blue-600 text-white text-sm cursor-pointer hover:bg-blue-700"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"Te6edf3installing Tff7b72? Ta5d6ff'opacity-60 pointer-events-none' Tff7b72: Ta5d6ff''Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3installing Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.installing"Tb4b4b4) Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.choose_file"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72labelTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3pluginsTb4b4b4.Te6edf3lengthTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 px-4 py-8 text-center text-sm text-gray-600 dark:text-gray-400"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.empty_state"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>

Tb4b4b4<Tff7b72div
Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3plugin Tff7b72in Te6edf3pluginsTa5d6ff"
Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3pluginTb4b4b4.Te6edf3idTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"rounded-lg border border-gray-200 dark:border-zinc-800 p-4 space-y-3"
Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-start justify-between gap-3"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"min-w-0 space-y-2"Tb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap items-center gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72h3 Te6edf3classTff7b72=Ta5d6ff"text-base font-semibold text-gray-900 dark:text-gray-100"Tb4b4b4>Tff7b72{{ Te6edf3pluginTb4b4b4.Te6edf3name Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72h3Tb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3classTff7b72=Ta5d6ff"px-2 py-0.5 rounded-full text-[11px] font-semibold uppercase tracking-wide"
Tb4b4b4:Te6edf3classTff7b72=Ta5d6ff"
Te6edf3pluginTb4b4b4.Te6edf3enabled
Tff7b72? Ta5d6ff'bg-green-100 text-green-800 dark:bg-green-900/30 dark:text-green-200'
Tff7b72: Ta5d6ff'bg-zinc-200 text-zinc-700 dark:bg-zinc-800 dark:text-zinc-300'
Ta5d6ff"
Tb4b4b4>
Tff7b72{{
Te6edf3pluginTb4b4b4.Te6edf3enabled
Tff7b72? Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.badge_enabled"Tb4b4b4)
Tff7b72: Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.badge_disabled"Tb4b4b4)
Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3pluginTb4b4b4.Te6edf3has_frontendTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-2 py-0.5 rounded-full text-[11px] font-semibold uppercase tracking-wide bg-sky-100 text-sky-800 dark:bg-sky-900/30 dark:text-sky-200"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.badge_frontend"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tff7b72span
Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3pluginTb4b4b4.Te6edf3has_backendTa5d6ff"
Te6edf3classTff7b72=Ta5d6ff"px-2 py-0.5 rounded-full text-[11px] font-semibold uppercase tracking-wide bg-violet-100 text-violet-800 dark:bg-violet-900/30 dark:text-violet-200"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.badge_wasm"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72spanTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-600 dark:text-gray-400"Tb4b4b4>Tff7b72{{ Te6edf3pluginTb4b4b4.Te6edf3description Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"text-xs text-gray-500 dark:text-gray-500"Tb4b4b4>Tff7b72{{ Te6edf3pluginTb4b4b4.Te6edf3id Tff7b72}} · vTff7b72{{ Te6edf3pluginTb4b4b4.Te6edf3version Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3classTff7b72=Ta5d6ff"flex flex-wrap gap-2"Tb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-ifTff7b72=Ta5d6ff"Tff7b72!Te6edf3pluginTb4b4b4.Te6edf3enabledTa5d6ff"
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1.5 rounded-md bg-blue-600 text-white text-sm"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3busyPluginId Tff7b72=== Te6edf3pluginTb4b4b4.Te6edf3idTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3enablePluginTb4b4b4(Te6edf3pluginTb4b4b4.Te6edf3idTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.enable"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3v-else
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1.5 rounded-md bg-zinc-600 text-white text-sm"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3busyPluginId Tff7b72=== Te6edf3pluginTb4b4b4.Te6edf3idTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3disablePluginTb4b4b4(Te6edf3pluginTb4b4b4.Te6edf3idTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.disable"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tff7b72button
Te6edf3typeTff7b72=Ta5d6ff"button"
Te6edf3classTff7b72=Ta5d6ff"px-3 py-1.5 rounded-md border border-red-300 text-red-600 text-sm"
Tb4b4b4:Te6edf3disabledTff7b72=Ta5d6ff"Te6edf3busyPluginId Tff7b72=== Te6edf3pluginTb4b4b4.Te6edf3idTa5d6ff"
Tb4b4b4@Te6edf3clickTff7b72=Ta5d6ff"Te6edf3confirmRemoveTb4b4b4(Te6edf3pluginTb4b4b4)Ta5d6ff"
Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.remove"Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72buttonTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72div Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3permissionLinesTb4b4b4(Te6edf3pluginTb4b4b4)Tb4b4b4.Te6edf3lengthTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-sm text-gray-700 dark:text-gray-300"Tb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3classTff7b72=Ta5d6ff"font-medium"Tb4b4b4>Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.permissions"Tb4b4b4) Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tff7b72ul Te6edf3classTff7b72=Ta5d6ff"list-disc pl-5"Tb4b4b4>
Tb4b4b4<Tff7b72li Te6edf3v-forTff7b72=Ta5d6ff"Te6edf3line Tff7b72in Te6edf3permissionLinesTb4b4b4(Te6edf3pluginTb4b4b4)Ta5d6ff" Tb4b4b4:Te6edf3keyTff7b72=Ta5d6ff"Te6edf3lineTa5d6ff"Tb4b4b4>Tff7b72{{ Te6edf3line Tff7b72}}Tb4b4b4<Tb4b4b4/Tff7b72liTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72ulTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tff7b72p Te6edf3v-ifTff7b72=Ta5d6ff"Te6edf3pluginTb4b4b4.Te6edf3auto_disabled_reasonTa5d6ff" Te6edf3classTff7b72=Ta5d6ff"text-sm text-amber-700 dark:text-amber-300"Tb4b4b4>
Tff7b72{{ Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.auto_disabled"Tb4b4b4, Tb4b4b4{ Te6edf3reasonTff7b72: Te6edf3pluginTb4b4b4.Te6edf3auto_disabled_reason Tb4b4b4}Tb4b4b4) Tff7b72}}
Tb4b4b4<Tb4b4b4/Tff7b72pTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72divTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72SettingsSectionBlockTb4b4b4>
Tb4b4b4<Tb4b4b4/Tff7b72templateTb4b4b4>

Tb4b4b4<Tff7b72scriptTb4b4b4>
Tff7b72import Te6edf3SettingsSectionBlock Tff7b72from Ta5d6ff"./SettingsSectionBlock.vue"Tb4b4b4;
Tff7b72import Te6edf3ToastUtils Tff7b72from Ta5d6ff"../../js/ToastUtils"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3manifestPermissionSummary Tb4b4b4} Tff7b72from Ta5d6ff"../../js/plugins/pluginManifest.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3pluginHost Tb4b4b4} Tff7b72from Ta5d6ff"../../js/plugins/PluginHost.js"Tb4b4b4;
Tff7b72import Tb4b4b4{ Te6edf3onWsEventTb4b4b4, Te6edf3offWsEvent Tb4b4b4} Tff7b72from Ta5d6ff"../../js/registries/wsEventRegistry.js"Tb4b4b4;

Tff7b72export Tff7b72default Tb4b4b4{
Te6edf3nameTff7b72: Ta5d6ff"PluginsSettingsSection"Tb4b4b4,
Te6edf3componentsTff7b72: Tb4b4b4{ Te6edf3SettingsSectionBlock Tb4b4b4}Tb4b4b4,
Te6edf3propsTff7b72: Tb4b4b4{
Te6edf3visibleTff7b72: Tb4b4b4{
Te6edf3typeTff7b72: Tffa657BooleanTb4b4b4,
Tff7b72defaultTff7b72: Tff7b72trueTb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Te6edf3dataTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tb4b4b4{
Te6edf3pluginsTff7b72: Tb4b4b4[Tb4b4b4]Tb4b4b4,
Te6edf3dragActiveTff7b72: Tff7b72falseTb4b4b4,
Te6edf3installingTff7b72: Tff7b72falseTb4b4b4,
Te6edf3busyPluginIdTff7b72: Tff7b72nullTb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3mountedTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72void Tff7b72thisTb4b4b4.Te6edf3refreshTb4b4b4(Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3onPluginDisabled Tff7b72= Tb4b4b4(Te6edf3payloadTb4b4b4) Tb4b4b4=> Tb4b4b4{
Tff7b72if Tb4b4b4(Te6edf3payloadTff7b72?Tb4b4b4.Te6edf3event Tff7b72=== Ta5d6ff"plugin.disabled"Tb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3warningTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.kill_switch"Tb4b4b4, Tb4b4b4{ Te6edf3reasonTff7b72: Te6edf3payloadTff7b72?Tb4b4b4.Te6edf3payloadTff7b72?Tb4b4b4.Te6edf3reason Tff7b72|| Ta5d6ff"" Tb4b4b4}Tb4b4b4)Tb4b4b4)Tb4b4b4;
Te6edf3pluginHostTb4b4b4.Te6edf3unloadPluginTb4b4b4(Te6edf3payloadTff7b72?Tb4b4b4.Te6edf3plugin_idTb4b4b4)Tb4b4b4;
Tff7b72void Tff7b72thisTb4b4b4.Te6edf3refreshTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4;
Te6edf3onWsEventTb4b4b4(Ta5d6ff"plugin.event"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onPluginDisabledTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3beforeUnmountTb4b4b4(Tb4b4b4) Tb4b4b4{
Te6edf3offWsEventTb4b4b4(Ta5d6ff"plugin.event"Tb4b4b4, Tff7b72thisTb4b4b4.Te6edf3onPluginDisabledTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3methodsTff7b72: Tb4b4b4{
Te6edf3currentLocaleTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72return Tff7b72thisTb4b4b4.Te6edf3$i18nTff7b72?Tb4b4b4.Te6edf3localeTff7b72?Tb4b4b4.Te6edf3value Tff7b72|| Tff7b72thisTb4b4b4.Te6edf3$i18nTff7b72?Tb4b4b4.Te6edf3locale Tff7b72|| Ta5d6ff"en"Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Te6edf3permissionLinesTb4b4b4(Te6edf3pluginTb4b4b4) Tb4b4b4{
Tff7b72return Te6edf3manifestPermissionSummaryTb4b4b4(Te6edf3pluginTb4b4b4.Te6edf3manifest Tff7b72|| Tb4b4b4{ Te6edf3permissionsTff7b72: Te6edf3pluginTb4b4b4.Te6edf3permissions Tff7b72|| Tb4b4b4{Tb4b4b4} Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3refreshTb4b4b4(Tb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3response Tff7b72= Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3getTb4b4b4(Ta5d6ff"/api/v1/plugins"Tb4b4b4)Tb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3plugins Tff7b72= Te6edf3responseTb4b4b4.Te6edf3dataTff7b72?Tb4b4b4.Te6edf3plugins Tff7b72|| Tb4b4b4[Tb4b4b4]Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3enablePluginTb4b4b4(Te6edf3pluginIdTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3busyPluginId Tff7b72= Te6edf3pluginIdTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/plugins/Tffd700${Tffa657encodeURIComponentTb4b4b4(Te6edf3pluginIdTb4b4b4)Tffd700}Ta5d6ff/enableTa5d6ff`Tb4b4b4)Tb4b4b4;
Tff7b72await Te6edf3pluginHostTb4b4b4.Te6edf3loadEnabledPluginsTb4b4b4(Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4, Tff7b72thisTb4b4b4.Te6edf3currentLocaleTb4b4b4(Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3refreshTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.enabled"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.install_failed"Tb4b4b4, Tb4b4b4{ Te6edf3reasonTff7b72: Te6edf3errorTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tffa657StringTb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3refreshTb4b4b4(Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3busyPluginId Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3disablePluginTb4b4b4(Te6edf3pluginIdTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3busyPluginId Tff7b72= Te6edf3pluginIdTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/plugins/Tffd700${Tffa657encodeURIComponentTb4b4b4(Te6edf3pluginIdTb4b4b4)Tffd700}Ta5d6ff/disableTa5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3pluginHostTb4b4b4.Te6edf3unloadPluginTb4b4b4(Te6edf3pluginIdTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3refreshTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.disabled"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3busyPluginId Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Te6edf3confirmRemoveTb4b4b4(Te6edf3pluginTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3prompt Tff7b72= Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.confirm_remove"Tb4b4b4, Tb4b4b4{ Te6edf3nameTff7b72: Te6edf3pluginTb4b4b4.Te6edf3name Tff7b72|| Te6edf3pluginTb4b4b4.Te6edf3id Tb4b4b4}Tb4b4b4)Tb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72!Tffa657windowTb4b4b4.Te6edf3confirmTb4b4b4(Te6edf3promptTb4b4b4)Tb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72void Tff7b72thisTb4b4b4.Te6edf3removePluginTb4b4b4(Te6edf3pluginTb4b4b4.Te6edf3idTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3removePluginTb4b4b4(Te6edf3pluginIdTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3busyPluginId Tff7b72= Te6edf3pluginIdTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Tff7b72deleteTb4b4b4(Ta5d6ff`Ta5d6ff/api/v1/plugins/Tffd700${Tffa657encodeURIComponentTb4b4b4(Te6edf3pluginIdTb4b4b4)Tffd700}Ta5d6ff`Tb4b4b4)Tb4b4b4;
Te6edf3pluginHostTb4b4b4.Te6edf3unloadPluginTb4b4b4(Te6edf3pluginIdTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3refreshTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3infoTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.removed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3busyPluginId Tff7b72= Tff7b72nullTb4b4b4;
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3installArchiveTb4b4b4(Te6edf3fileTb4b4b4) Tb4b4b4{
Tff7b72if Tb4b4b4(Tff7b72!Te6edf3fileTb4b4b4) Tb4b4b4{
Tff7b72returnTb4b4b4;
Tb4b4b4}
Tff7b72thisTb4b4b4.Te6edf3installing Tff7b72= Tff7b72trueTb4b4b4;
Tff7b72try Tb4b4b4{
Tff7b72const Te6edf3formData Tff7b72= Tff7b72new Te6edf3FormDataTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3formDataTb4b4b4.Te6edf3appendTb4b4b4(Ta5d6ff"archive"Tb4b4b4, Te6edf3fileTb4b4b4)Tb4b4b4;
Tff7b72await Tffa657windowTb4b4b4.Te6edf3apiTb4b4b4.Te6edf3postTb4b4b4(Ta5d6ff"/api/v1/plugins/install"Tb4b4b4, Te6edf3formDataTb4b4b4)Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3refreshTb4b4b4(Tb4b4b4)Tb4b4b4;
Te6edf3ToastUtilsTb4b4b4.Te6edf3successTb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.installed"Tb4b4b4)Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72catch Tb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4{
Te6edf3ToastUtilsTb4b4b4.Te6edf3errorTb4b4b4(
Tff7b72thisTb4b4b4.Te6edf3$tTb4b4b4(Ta5d6ff"plugins.settings.install_failed"Tb4b4b4, Tb4b4b4{ Te6edf3reasonTff7b72: Te6edf3errorTff7b72?Tb4b4b4.Te6edf3message Tff7b72|| Tffa657StringTb4b4b4(Te6edf3errorTb4b4b4) Tb4b4b4}Tb4b4b4)
Tb4b4b4)Tb4b4b4;
Tb4b4b4} Tff7b72finally Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3installing Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72thisTb4b4b4.Te6edf3dragActive Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72if Tb4b4b4(Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3fileInputTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3$refsTb4b4b4.Te6edf3fileInputTb4b4b4.Te6edf3value Tff7b72= Ta5d6ff""Tb4b4b4;
Tb4b4b4}
Tb4b4b4}
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onInstallFileTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72const Te6edf3file Tff7b72= Te6edf3eventTb4b4b4.Te6edf3targetTb4b4b4.Te6edf3filesTff7b72?Tb4b4b4.Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3installArchiveTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tff7b72async Te6edf3onDropArchiveTb4b4b4(Te6edf3eventTb4b4b4) Tb4b4b4{
Tff7b72thisTb4b4b4.Te6edf3dragActive Tff7b72= Tff7b72falseTb4b4b4;
Tff7b72const Te6edf3file Tff7b72= Te6edf3eventTb4b4b4.Te6edf3dataTransferTff7b72?Tb4b4b4.Te6edf3filesTff7b72?Tb4b4b4.Tb4b4b4[T79c0ff0Tb4b4b4]Tb4b4b4;
Tff7b72await Tff7b72thisTb4b4b4.Te6edf3installArchiveTb4b4b4(Te6edf3fileTb4b4b4)Tb4b4b4;
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4,
Tb4b4b4}Tb4b4b4;
Tb4b4b4<Tb4b4b4/Tff7b72scriptTb4b4b4>


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────